09ff0099b6ad978196fd18c52df52e89c85c0c21,xwiki-platform-watchlist/plugin/src/main/java/com/xpn/xwiki/plugin/watchlist/WatchListPlugin.java,WatchListPlugin,initWatchListJob,#number#String#String#String#XWikiContext#,211

Before Change



        if (needsUpdate) {
            int index = doc.createNewObject(SchedulerPlugin.XWIKI_JOB_CLASS, context);
            BaseObject job = doc.getObject(SchedulerPlugin.XWIKI_JOB_CLASS, index);
            job.setStringValue("jobName", name);
            job.setStringValue("jobClass", jobClass);
            job.setStringValue("cron", cron);
            job.setLargeStringValue("script", Integer.toString(interval));
            job.setLargeStringValue("jobDescription", description);

            // set the needed context params
            // TODO create a watchlist application that holds those jobs as documents
            job.setStringValue("contextUser", "XWiki.Admin");
            job.setStringValue("contextLang", "en");
            job.setStringValue("contextDatabase", "xwiki");

            doc.setContent("#includeInContext('XWiki.SchedulerJobSheet')");
            doc.setAuthor("XWiki.Admin");
            doc.setCreator("XWiki.Admin");
            index = doc.createNewObject("XWiki.XWikiRights", context);
            BaseObject rights = doc.getObject("XWiki.XWikiRights", index);
            rights.setStringValue("groups", "XWiki.XWikiAdminGroup");
            rights.setStringValue("levels", "edit,delete");
            rights.setIntValue("allow", 1);
            context.getWiki().saveDocument(doc, "", true, context);
            ((SchedulerPlugin) context.getWiki().getPlugin("scheduler", context))
                .scheduleJob(job, context);
        }
    }

After Change


            if (job == null) {
                needsUpdate = true;
                int index = doc.createNewObject(SchedulerPlugin.XWIKI_JOB_CLASS, context);
                job = doc.getObject(SchedulerPlugin.XWIKI_JOB_CLASS, index);
                job.setStringValue("jobName", name);
                job.setStringValue("jobClass", jobClass);
                job.setStringValue("cron", cron);
                job.setLargeStringValue("script", Integer.toString(interval));
                job.setLargeStringValue("jobDescription", description);
                job.setStringValue("contextUser", "XWiki.Admin");
                job.setStringValue("contextLang", "en");
                job.setStringValue("contextDatabase", "xwiki");
            }

            BaseObject rights = doc.getObject("XWiki.XWikiRights");
            if (rights == null) {
                needsUpdate = true;
                int index = doc.createNewObject("XWiki.XWikiRights", context);
                rights = doc.getObject("XWiki.XWikiRights", index);
                rights.setStringValue("groups", "XWiki.XWikiAdminGroup");
                rights.setStringValue("levels", "edit,delete");
                rights.setIntValue("allow", 1);
            }

            if (StringUtils.isBlank(doc.getAuthor())) {
                needsUpdate = true;
                doc.setAuthor("XWiki.Admin");
            }
            if (StringUtils.isBlank(doc.getCreator())) {
                needsUpdate = true;
                doc.setCreator("XWiki.Admin");
            }
            if (StringUtils.isBlank(doc.getParent())) {
                needsUpdate = true;
                doc.setParent("XWiki.XWikiClasses");
            }
            if (StringUtils.isBlank(doc.getContent())) {
                needsUpdate = true;
                doc.setContent("#includeInContext(\"XWiki.SchedulerJobSheet\")");
            }

            if (needsUpdate) {
                context.getWiki().saveDocument(doc, "", true, context);
                ((SchedulerPlugin) context.getWiki().getPlugin("scheduler", context)).scheduleJob(job, context);
            }
        } catch (Exception e) {
            log.error("Cannot initialize WatchListJob", e);